var isSupportFile=false;
if (window.File && window.FileReader && window.FileList && window.Blob) {
    isSupportFile=true;
} else {
	alert('The File APIs are not fully supported in this browser.');
}
var containerObj=$(".msgDiv")[0];
function uploadImage(containerObj){
	containerObj[0].addEventListener('dragenter', handleDragEnter, false);
	containerObj[0].addEventListener('dragover', handleDragOver, false);
	containerObj[0].addEventListener('drop', handleFileSelect, false);
	containerObj[0].addEventListener('dragleave', handleDragLeave, false);
	containerObj[0].addEventListener('paste', pasteFile, false);
}
function pasteFile(e){
	var obj=this;
	var files=new Array();
	 var items = e.clipboardData.items;
	    for (var i = 0; i < items.length; ++i) {
	        var item = e.clipboardData.items[i];
	        if (items[i].kind == 'file' && items[i].type == 'image/png') {
	            //FileReader可以参考API
//	            var fileReader = new FileReader();
//	            //readAsDataURL是一个异步过程，这里提供回调方法
//	            fileReader.onloadend = function () {
//	                var d = this.result.substr( this.result.indexOf(',')+1);
//	                var img = document.createElement("img");
//	                img.src= "data:image/jpeg;base64,"+d;
//	                document.body.appendChild(img);
//	            };
//	            //DataURL，不清楚了可以去看下资料
//	            fileReader.readAsDataURL(item.getAsFile());
	            file=item.getAsFile();//读取剪贴板中的文件
	            file.name=new Date().getTime()+".png";//默认的文件名
	            file.type="image/png";
	            files.push(file);
	            break; // Just get one
	        }
	    }
	   var talkId=$(obj).parent().parent().parent().parent().attr("id").replace("Dialog-","");
	   selectFile($(obj),talkId,files);
}

if (window.FileReader) {

	// 判断是否图片
	function isImage(type) {
		switch (type) {
		case 'image/jpeg':
		case 'image/png':
		case 'image/gif':
		case 'image/bmp':
		case 'image/jpg':
			return true;
		default:
			return false;
		}
	}
	var imgFile=null;
	var uploadFile=null;
	// 处理拖放文件列表
	function handleFileSelect(evt) {
		evt.stopPropagation();
		evt.preventDefault();
		var obj=this;
		var files = evt.dataTransfer.files;
		selectFile($(obj),files);
	}
	
	// 处理插入拖出效果
	function handleDragEnter(evt){ 
		 }
	function handleDragLeave(evt){ 
		}

	// 处理文件拖入事件，防止浏览器默认事件带来的重定向
	function handleDragOver(evt) {
		evt.stopPropagation();
		evt.preventDefault();
	}
	
} else {
	alert('你的浏览器不支持啊，同学');
}

/**
 * @param containerObj 为当前聊天窗口的msgDiv容器
 * @param files
 */
function selectFile(containerObj,talkId,files){
	for (var i = 0, f; f = files[i]; i++) {
		var t = f.type ? f.type : 'n/a',isImg = isImage(t);
		console.log(f);
		// 处理得到的图片
		var fromPid=$("#pInfo").attr("loginPid");
		var jstr={};
		jstr.type=3;
		jstr.from=fromPid;
		jstr.to=talkId;
		jstr.showObj="#Dialog-"+talkId;
		
		jstr.timestamp=new Date().getTime();
		jstr.fileName=f.name;
		jstr.fileSize=f.size;
		uploadFile=f;
		if (isImg&&f.size<(1024*1024)) {//小于1M的图片文件则直接显示loading图片在发送区，然后上传
			jstr.showType="display";//小于1M的图片直接显示
			var img = '<img class="loadingImg" src="./style/images/img_loading.gif"/>';
			$(img).appendTo(containerObj);
//			var reader = new FileReader();
//			 reader.readAsArrayBuffer(f);
//		     reader.onload = function loaded(evt) {
//		         var arrayBuffer = evt.target.result;
//		         socket.send(arrayBuffer);
//		     };
			jstr.method="talk";//说明是聊天时候发送的图片上传
			socket.send(window.JSON.stringify(jstr));
		} else {//如果是大于1M的图片文件或者其他类型文件，则直接上传至服务器，上传成功后通知对方接收
			jstr.showType="rightWin";//小于1M的图片直接显示
			jstr.fileListId=fromPid+"-"+new Date().getTime();
			jstr.method="upload";//说明是聊天时候发送的图片上传
			//打开右边传送文件窗口
			var rightWinObj=containerObj.parent().parent().parent().find(".rightWin");
			openNewUploadSocket(rightWinObj,jstr,f);
		}
	}
}

/**
 * 浮点数强制保留2为小数
 * @param float
 * @returns 两位小数
 */
function remain2Num(float) {
    var f_x = parseFloat(float);
    if (isNaN(f_x)) {
        alert('文件大小计算错误!');
        return false;
    }
    var f = Math.round(f_x*100)/100;  
    var s = f.toString();  
    var rs = s.indexOf('.');
    if (rs < 0) {  
        rs = s.length;  
        s += '.';  
    }  
    while (s.length <= rs + 2) {  
        s += '0';  
    }  
    return s;   
}


/**
 * 文件传输窗口的进度条信息
 * @param rightWinObj
 * @param jstr
 * @param f
 */
function fileDelivery(rightWinObj,jstr,f,uploadIndex){
		if(rightWinObj.attr("type")!='other'){
			var talkWin=rightWinObj.parent().parent();
			rightWinObj.css({
				width:(OTHER_RIGHT_WINDOW_WIDTH-1)
			}).attr("type","other");
			talkWin.dialog({
				width:parseInt(talkWin.parent().css("width").replace("px",""))+90
			});
			talkWindowResize(talkWin);
		}
		rightWinObj.find("#defaultInfo").hide();
		var fPanel=rightWinObj.find("#transFilePanel");
		fPanel.show();
		fPanel.find("#closeFileWin").unbind('click').bind('click',function(){
			//首先判断是否有未完成的li对象存在
			if(fPanel.find(".FileInfo").children().length>0){
				var cfm=confirm("文件传输正在进行中，确认要关闭?");
				if(cfm){
					closeFileWin(rightWinObj);
					//关闭所有的socket
					$.each(uploadSocket,function(key,val){//需要删除所有未上传完成的临时文件
						val.close();
					});
				}else{
					return;
				}
			}else{//关闭窗口
				closeFileWin(rightWinObj);
			}
		});
//		if(model=='receive'){
//			var liHtml=fPanel.find(".receiveLi").html();
//			var liObj=$(liHtml);
//			liObj.appendTo(fPanel.find("ul")).show();
//			liObj.attr("id",jstr.fileListId).removeAttr("class");//以当前时间加上formID作为文件传输项的标识，便于计算进度条
//			liObj.find(".fName").text(subStr(jstr['fileName'],12)).attr("title",jstr['fileName']);;
//			liObj.find(".fileSize").text(remain2Num(jstr['fileSize']/1024)+"KB");
//			liObj.attr("uploadIndex",upsocketIndex);
//			fPanel.css({
//				height:fPanel.parent().height(),
//				"overflow-y":"auto"
//			});
//			liObj.find(".progress").progressbar({
//				value: 15
//			}).children().addClass("progressBarEffect");
//		}else if(model=='send'){
			var liHtml=fPanel.find(".sendLi").html();
			var liObj=$(liHtml);
			liObj.appendTo(fPanel.find("ul")).show();
			liObj.attr("id",jstr.fileListId).removeAttr("class");//以当前时间加上formID作为文件传输项的标识，便于计算进度条
			liObj.find(".fName").text(subStr(f.name,12)).attr("title",f.name);
//			if(f.size/1024<1024){//小于1M的文件显示KB
//				liObj.find(".fileSize").text(remain2Num(f.size/1024)+"KB");
//			}else if(f.size/1024/1024<1024){//小于1G的文件显示MB
//				liObj.find(".fileSize").text(remain2Num(f.size/1024/1024)+"MB");
//			}else if(f.size/1024/1024/1024<1024){//大于1G小于1T的文件显示GB
//				liObj.find(".fileSize").text(remain2Num(f.size/1024/1024)+"GB");
//			}
			liObj.find(".fileSize").text(getFileOrSpeedUnit(f.size));
			liObj.attr("uploadIndex",uploadIndex);
			fPanel.css({
				height:fPanel.parent().height(),
				"overflow-y":"auto"
			});
			liObj.find(".progress").progressbar({
				value: 0
			}).children().addClass("progressBarEffect");
//		}
}
function getFileOrSpeedUnit(fSize){
	if(fSize/1024<1024){//小于1M的文件显示KB
		return remain2Num(fSize/1024)+"KB";
	}else if(fSize/1024/1024<1024){//小于1G的文件显示MB
		return remain2Num(fSize/1024/1024)+"MB";
	}else if(fSize/1024/1024/1024<1024){//大于1G小于1T的文件显示GB
		return remain2Num(fSize/1024/1024/1024)+"GB";
	}
}
function closeFileWin(rightWinObj){
	var talkWin=rightWinObj.parent().parent();
	rightWinObj.css({
		width:(DEFAULT_RIGHT_WINDOW_WIDTH-1)
	}).attr("type","default");
	talkWin.dialog({
		width:parseInt(talkWin.parent().css("width").replace("px",""))-90
	});
	rightWinObj.find("#transFilePanel").hide().find("ul").html("");
	rightWinObj.find("#defaultInfo").show();
	talkWindowResize(talkWin);
}